DUA3:<000000>KITINSTAL.035;1
 
$! KITINSTAL.COM
$! COPYRIGHT (C) 1987 BY
$! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
$! ALL RIGHTS RESERVED.
$!
$! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
$! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
$! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR  ANY  OTHER
$! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
$! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE IS  HEREBY
$! TRANSFERRED.
$!
$! THE INFORMATION IN THIS SOFTWARE IS  SUBJECT TO CHANGE WITHOUT NOTICE
$! AND  SHOULD  NOT  BE  CONSTRUED AS  A COMMITMENT BY DIGITAL EQUIPMENT
$! CORPORATION.
$!
$! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE  OR  RELIABILITY OF ITS
$! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
$!
$!
$!**********************************************************************
$!
$!      KITINSTAL.COM procedure for VAX PASCAL
$!
$!**********************************************************************
$!
$!  Set up error handling.
$!
$       ON CONTROL_Y THEN GOTO CONTROL_Y_EXIT
$       ON WARNING  THEN EXIT $STATUS
$!
$!  Print debugging information if necessary.
$!
$       IF P2 THEN WRITE SYS$OUTPUT -
$          "DEBUG - KITINSTAL for ''VMI$PRODUCT' - function is ''p1'"
$!
$!  Initialize variables.
$!
$       TRUE   = 1
$       FALSE  = 0
$       PASCAL$DEBUG         == P2
$       PASCAL$ABORT_INSTALL == FALSE
$!
$!  Handle INSTALL, IVP and unsupported parameters passed by VMSINSTAL
$!
$       IF P1 .EQS. "VMI$_INSTALL" THEN GOTO INSTALL
$       IF P1 .EQS. "VMI$_IVP"     THEN GOTO IVP
$       EXIT VMI$_UNSUPPORTED
$!
$! *---------*
$! * INSTALL *
$! *---------*
$!
$ INSTALL:
$!
$!  Set up error handling.
$!
$       ON CONTROL_Y THEN GOTO INSTALL_CONTROL_Y
$       ON WARNING   THEN GOTO INSTALL_ERROR
$!
$!  Print initial comment.
$!
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT "      *    Installation Command Procedure for   *"
$       WRITE SYS$OUTPUT "      *             VAX PASCAL V3.5             *"
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT " "
$!
$ VERIFY_VMS_VERSION:
$!
$! Establish error-handler in case we are on a Pre-V4 system without VMI$VMS_VERSION
$!
$       ON ERROR THEN GOTO BAD_VMS_VERSION      
$!
$! VAX PASCAL V3.5 requires VMS V4.4 or greater
$!
$       VMI$REQUIRED == "044"
$!
$! Assume failure
$!
$       PASCAL$VMS == 0
$!
$! Trim off RELASED, UPGRADE, or UPDATE keyword
$!
$       VMI_TYPE = F$ELEMENT(0,",",VMI$VMS_VERSION)
$       VMI_TYPE = F$ELEMENT(0," ",VMI_TYPE)    ! Ignore FT if there
$!
$! Determine VMS version number 
$!
$       VMI_VERSION = F$ELEMENT(1,",",VMI$VMS_VERSION)
$!
$! If UPGRADE, version number is "meaningless"
$!
$       IF VMI_TYPE .NES. "UPGRADE" THEN GOTO CONTINUE_VERSION_CHECK
$!
$! Type is UPGRADE, just assume V4.4 or greater and hold our breath
$!
$       VMI$CALLBACK MESSAGE I UPGRDVMS -
           "Assuming VMS version is V4.4 or greater"
$       GOTO VERIFY_VMS_VERSION_END
$!
$ CONTINUE_VERSION_CHECK:
$!
$! Compare the current version string with our requirement
$!
$       IF F$EXTR(0,3,VMI_VERSION) .GES. F$EXTR(0,3,VMI$REQUIRED) -
         THEN PASCAL$VMS == 1
$!
$! Check result of comparison
$!
$       IF PASCAL$VMS THEN GOTO VERIFY_VMS_VERSION_END
$!
$ BAD_VMS_VERSION:
$       VMI$CALLBACK MESSAGE E BADVMS1 -
           "This kit requires VMS V4.4 (or later) for correct installation."
$       VMI$CALLBACK MESSAGE E BADVMS2 -
           "Please install VMS V4.4 (or later) before installing VAX PASCAL."
$!
$! Don't finish the installation.
$!
$       PASCAL$ABORT_INSTALL == TRUE 
$!
$ VERIFY_VMS_VERSION_END:
$!
$! Restore old error handler
$!
$       ON ERROR THEN GOTO INSTALL_ERROR
$!
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished VMS version check"
$!  
$!  Check for enough free blocks on system disk.  
$!
$ CHECK_NET_UTILIZATION:
$!
$       VMI$CALLBACK CHECK_NET_UTILIZATION PASCAL$ 3400
$!
$! If enough then continue with installation
$!
$       IF PASCAL$ THEN GOTO CHECK_NET_UTILIZATION_END
$!
$! Not enough disk space present
$!
$       VMI$CALLBACK MESSAGE E NOSPACE1 -
           "System disk does not contain enough free blocks to install"
$       VMI$CALLBACK MESSAGE E NOSPACE2 -
           "VAX PASCAL.  VAX PASCAL requires 3400 free blocks."
$       PASCAL$ABORT_INSTALL == TRUE
$!
$ CHECK_NET_UTILIZATION_END:
$!
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished net utilization check"
$!
$! Shall we contine this installation?
$!
$       IF PASCAL$ABORT_INSTALL THEN GOTO INSTALL_TERMINATE
$!
$! Set safety mode with peak block usage
$!
$       VMI$CALLBACK SET SAFETY CONDITIONAL 4000
$!
$! Establish PURGE and IVP flags
$!
$       WRITE SYS$OUTPUT " "
$       VMI$CALLBACK SET PURGE NO
$       VMI$CALLBACK SET PURGE ASK
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
$           "DEBUG - Purge flag has been set"
$!
$       VMI$CALLBACK SET IVP YES
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Verification flag has been set"
$!
$! Provide release notes.  The user may have extracted them with
$! "OPTIONS N" on the VMSINSTAL command line, but I don't know...
$!
$       TYPE SYS$INPUT


    This kit contains a file summarizing the new features, changes,
    restrictions, and compatibility issues in this release of VAX 
    PASCAL.  This file is named PASCAL035.RELEASE_NOTES and will be
    placed in SYS$HELP:.  

    This file contains information valuable to VAX PASCAL programmers.  
    Please inform your user community of this file's existence.

$!
$! Determine if LSEDIT is on the system.  If so, then we will attempt
$! to update the LSE$SYSTEM_ENVIRONMENT.ENV file with our new PASCAL.ENV
$! file.
$!
$       VMI$CALLBACK FIND_FILE -
            PASCAL$ -
            VMI$ROOT:[SYSLIB]LSE$SYSTEM_ENVIRONMENT.ENV -
            "" -
            S -
            PASCAL$FOUND_LSE_ENVIRONMENT
$!
$! Did we find it?  Assume we won't upgrade the .ENV file.
$!
$       PASCAL$INSTALL_LSE_ENVIRONMENT == FALSE
$       IF PASCAL$FOUND_LSE_ENVIRONMENT .NES. "S" THEN GOTO LSE_ASK_USER_END
$!
$! We have LSE on this system.  See if the user wants to upgrade.
$!
$       TYPE SYS$INPUT


    This kit contains a new LSEDIT environment for VAX PASCAL V3.5.
    This environment includes modified source code templates and 
    modified HELP topic strings.  We recommend that you install 
    this new environment to allow you access to these modifications.

    For existing customers, this is the same LSEDIT environment
    that was included in the VAX PASCAL V3.4 release.

$       VMI$CALLBACK ASK PASCAL$INSTALL_LSE_ENVIRONMENT -
            "Do you want to install the environment " YES B
$!
$ LSE_ASK_USER_END:
$!
$!  If all is fine so far then continue else goto INSTALL_FINISH.
$!
$ INSTALL_TERMINATE:
$       IF .NOT. PASCAL$ABORT_INSTALL THEN GOTO INSTALL_TERMINATE_END
$       VMI$CALLBACK MESSAGE E RETRY1 -
           "Please correct the reported problem(s) before attempting"
$       VMI$CALLBACK MESSAGE E RETRY2 -
           "to install VAX PASCAL."
$       PASCAL$STATUS == VMI$_FAILURE
$       GOTO INSTALL_FINISH
$ INSTALL_TERMINATE_END:
$!
$       TYPE SYS$INPUT


    All questions regarding the installation have now been asked.  
    The installation of VAX PASCAL V3.5 will now continue for 
    approximately 5 to 120 minutes depending on your configuration.

$!
$! Unload the second saveset from the kit
$!
$       VMI$CALLBACK RESTORE_SAVESET B
$!
$!  Decompress the "source" files
$!
$       LIBRARIAN/TEXT/EXTRACT=LSEUPDATE/OUTPUT=VMI$KWD:LSEUPDATE.TPU   VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=LIBDEF/OUTPUT=VMI$KWD:LIBDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=MTHDEF/OUTPUT=VMI$KWD:MTHDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALCLD/OUTPUT=VMI$KWD:PASCAL.CLD      VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALHLP/OUTPUT=VMI$KWD:PASCAL.HLP      VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCTEST/OUTPUT=VMI$KWD:PASCTEST.PAS     VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASDEF/OUTPUT=VMI$KWD:PASDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASSTATUS/OUTPUT=VMI$KWD:PASSTATUS.PAS   VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=SIGDEF/OUTPUT=VMI$KWD:SIGDEF.PAS         VMI$KWD:PASCALSRC.TLB
$       LIBRARIAN/TEXT/EXTRACT=PASCALFDL/OUTPUT=VMI$KWD:PASCAL.FDL      VMI$KWD:PASCALSRC.TLB
$!
$       DELETE VMI$KWD:PASCALSRC.TLB.*
$!
$!
$!  Decompress the EXE files and convert them back to 512 byte fixed records
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALEXE/OUTPUT=VMI$KWD:PASCAL.EXE      VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCAL.EXE       VMI$KWD:PASCAL.EXE
$       PURGE VMI$KWD:PASCAL.EXE
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALER1/OUTPUT=VMI$KWD:PASCALER1.EXE   VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCALER1.EXE    VMI$KWD:PASCALER1.EXE
$       PURGE VMI$KWD:PASCALER1.EXE
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALER2/OUTPUT=VMI$KWD:PASCALER2.EXE   VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCALER2.EXE    VMI$KWD:PASCALER2.EXE
$       PURGE VMI$KWD:PASCALER2.EXE
$!
$! If we are not updating the LSE system environment (either because LSEDIT is not
$! on the system or the user said no), then don't bother extracting and converting
$! the PASCAL.ENV file.
$!
$       IF .NOT. PASCAL$INSTALL_LSE_ENVIRONMENT THEN GOTO LSE_FINISH_EXTRACT
$!
$       LIBRARIAN/TEXT/EXTRACT=PASCALENV/OUTPUT=VMI$KWD:PASCAL.ENV      VMI$KWD:PASCALEXE.TLB
$       CONVERT/FDL=VMI$KWD:PASCAL.FDL VMI$KWD:PASCAL.ENV       VMI$KWD:PASCAL.ENV
$       PURGE VMI$KWD:PASCAL.ENV
$!
$ LSE_FINISH_EXTRACT:
$!
$       DELETE VMI$KWD:PASCALEXE.TLB.*
$!
$! Handle the PASCAL.ENV file
$!
$       IF .NOT. PASCAL$INSTALL_LSE_ENVIRONMENT THEN GOTO LSE_FINISH
$!
$! Invoke LSEDIT to update the system environment
$!
$       SET MESSAGE /NOSEVERITY/NOTEXT/NOFACILITY/NOIDENT
$       LSEDIT/NODISPLAY/NOSYSTEM_ENVIRONMENT/ENVIRONMENT=(PASCAL) -
            /NOSECTION/COMMAND=(VMI$KWD:LSEUPDATE.TPU)
$       SET MESSAGE /SEVERITY/TEXT/FACILITY/IDENT
$!
$! Provide the system environment
$!
$       VMI$CALLBACK PROVIDE_FILE LSEDIT$ LSE$SYSTEM_ENVIRONMENT.ENV -
            VMI$ROOT:[SYSLIB]
$!
$ LSE_FINISH:
$!
$!  Copy files from install kit to current directory.
$!
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ LIBDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ MTHDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASSTATUS.PAS                VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ SIGDEF.PAS                   VMI$ROOT:[SYSLIB]
$       VMI$CALLBACK PROVIDE_FILE  PASCAL$ PASCAL035.RELEASE_NOTES      VMI$ROOT:[SYSHLP]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCAL.EXE                   VMI$ROOT:[SYSEXE]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCALER1.EXE                VMI$ROOT:[SYSMSG]
$       VMI$CALLBACK PROVIDE_IMAGE PASCAL$ PASCALER2.EXE                VMI$ROOT:[SYSMSG]
$!
$!  Build PASCAL command line.
$!
$ BUILD_COMMAND_LINE:
$!
$       VMI$CALLBACK PROVIDE_DCL_COMMAND PASCAL.CLD
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished building PASCAL command line"
$!
$!
$!  Replace PASCAL HELP command in the LIBRARY.
$!
$       VMI$CALLBACK PROVIDE_DCL_HELP PASCAL.HLP
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Finished replacing PASCAL HELP command in the LIBRARY"
$!
$       PASCAL$STATUS == VMI$_SUCCESS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install had normal finish"
$       TYPE SYS$INPUT

  Your VMS system will now be updated to include the following new and 
  modified files:

    SYS$HELP:HELPLIB.HLB                   [modified]
    SYS$HELP:PASCAL035.RELEASE_NOTES       [new]
    SYS$LIBRARY:DCLTABLES.EXE              [modified]
    SYS$LIBRARY:LIBDEF.PAS                 [new]
$!
$! If LSE environment was updated, then tell the user
$!
$       IF PASCAL$INSTALL_LSE_ENVIRONMENT THEN WRITE SYS$OUTPUT -
                "    SYS$LIBRARY:LSE$SYSTEM_ENVIRONMENT.ENV [modified]"
$!
$       TYPE SYS$INPUT
    SYS$LIBRARY:MTHDEF.PAS                 [new]
    SYS$LIBRARY:PASDEF.PAS                 [new]
    SYS$LIBRARY:PASSTATUS.PAS              [new]
    SYS$LIBRARY:SIGDEF.PAS                 [new]
    SYS$MESSAGE:PASCALER1.EXE              [new]
    SYS$MESSAGE:PASCALER2.EXE              [new]
    SYS$SYSTEM:PASCAL.EXE                  [new]

$       GOTO INSTALL_FINISH
$!
$ INSTALL_CONTROL_Y:
$       VMI$CALLBACK CONTROL_Y
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install received a Control Y"
$       GOTO INSTALL_FINISH
$!
$ INSTALL_ERROR:
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - Install flagged a previous error"
$!
$ INSTALL_FINISH:
$       ON WARNING   THEN CONTINUE
$       ON CONTROL_Y THEN CONTINUE
$!
$       IF .NOT. PASCAL$STATUS THEN WRITE SYS$OUTPUT -
           "VAX PASCAL Installation aborted"
$!
$       EXIT PASCAL$STATUS
$!
$! *--------------------------------*
$! * End of VAX PASCAL Installation *
$! *--------------------------------*
$!
$! *-----*
$! * IVP *
$! *-----*
$!
$ IVP:
$!
$!  Set up error handling.
$!
$       ON WARNING   THEN GOTO IVP_ERROR
$       ON CONTROL_Y THEN GOTO IVP_CONTROL_Y
$!
$!  Print initial comments.
$!
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT "      * Installation Verification Procedure for *"
$       WRITE SYS$OUTPUT "      *            VAX PASCAL V3.5              *"
$       WRITE SYS$OUTPUT "      *-----------------------------------------*"
$       WRITE SYS$OUTPUT " "
$       WRITE SYS$OUTPUT " "
$!
$       DEFINE/USER PASCAL      VMI$ROOT:[SYSEXE]PASCAL.EXE;
$       PASCAL/LIST/OBJECT      VMI$KWD:PASCTEST.PAS
$       LINK/NOTRACE            VMI$KWD:PASCTEST.OBJ
$       RUN                     VMI$KWD:PASCTEST.EXE
$!
$       IF PASCAL$DEBUG THEN SYS$OUTPUT -
           "DEBUG - Finished IVP"  
$!
$       PASCAL$STATUS == VMI$_SUCCESS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP had a normal finish"
$       GOTO IVP_FINISH
$!
$ IVP_CONTROL_Y:
$       PASCAL$STATUS == VMI$_FAILURE
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP received a Control Y"
$       GOTO IVP_FINISH
$!
$ IVP_ERROR:
$       PASCAL$STATUS == 0 + $STATUS
$       IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT -
           "DEBUG - IVP flagged a previous error"
$       
$!
$ IVP_FINISH:
$       ON WARNING   THEN CONTINUE
$       ON CONTROL_Y THEN CONTINUE
$       EXIT PASCAL$STATUS
$!
$! *--------------------------------------------------------*
$! * End of VAX PASCAL Installation Verification Procedure. *
$! *--------------------------------------------------------*
$!
$ CONTROL_Y_EXIT:
$       VMI$CALLBACK CONTROL_Y
$       EXIT VMI$_FAILURE
